/***
 7-6 深入虎穴 (20 分)
著名的王牌间谍 007 需要执行一次任务，获取敌方的机密情报。已知情报藏在一个地下迷宫里，迷宫只有一个入口，里面有很多条通路，每条路通向一扇门。每一扇门背后或者是一个房间，或者又有很多条路，同样是每条路通向一扇门…… 他的手里有一张表格，是其他间谍帮他收集到的情报，他们记下了每扇门的编号，以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。

内线告诉他，情报就藏在迷宫的最深处。但是这个迷宫太大了，他需要你的帮助 —— 请编程帮他找出距离入口最远的那扇门。

输入格式：
输入首先在一行中给出正整数 N（<10
5
 ），是门的数量。最后 N 行，第 i 行（1≤i≤N）按以下格式描述编号为 i 的那扇门背后能通向的门：

K D[1] D[2] ... D[K]
其中 K 是通道的数量，其后是每扇门的编号。

输出格式：
在一行中输出距离入口最远的那扇门的编号。题目保证这样的结果是唯一的。

输入样例：
13
3 2 3 4
2 5 6
1 7
1 8
1 9
0
2 11 10
1 13
0
0
1 12
0
0
结尾无空行
输出样例：
12
结尾无空行
 * ***/
#include "stdio.h"
#include "stdlib.h"
#define MAXN 100001
int link[MAXN];
int length[MAXN];
int getRoot(int start){
    return link[start]==-1?start:getRoot(link[start]);
}
int getLen(int root,int start){
    if(start==root)return 0;
    if(length[start]!=-1)return length[start];
    length[start] = getLen(root, link[start]) + 1;
    return length[start];
}
int main(int argc, char const *argv[])
{
    int N,n,i,j,second,root,len,max=-1,maxdoor;
    // freopen("a.txt", "r", stdin);
    scanf("%d",&N);
    for(i=1;i<=N;i++){
        link[i]=-1;
        length[i]=-1;
    }
    for(i=1;i<=N;i++){
        scanf("%d",&n);
        for(j=0;j<n;j++){
            scanf("%d",&second);
            link[second]=i;
        }
    }
    root=getRoot(1);
    for(i=1;i<=N;i++){
        len=getLen(root,i);
        if(len>max){
            max=len;
            maxdoor=i;
        }
    }
    printf("%d\n",maxdoor);
    return 0;
}
